1. Field of the Invention
The present invention relates generally to a method and apparatus for preventing the unauthorized use of software programs, and in particular, a method and apparatus of preventing the unauthorized use of software programs by unauthorized hardware devices.
2. Description of Related Art
The unauthorized use of software is a common problem for software developers and distributors. The use of personal computers at home and in the office has become widespread in the last decade. Software and hardware products provide a high level of functionality and their use is growing. Particularly, the use of personal computers at home is still rising and will extend further on. The more complex the software functionality and the greater the effort of development of the software the more important is the protection of software against unauthorized use. Although unauthorized copying of computer software is a violation of the law, the widespread availability of pirated software and limited enforcement capabilities have further enlarged the extension of software piracy.
Furthermore, software is distributed in growing number in combination with special hardware devices. This bounding of hardware devices with corresponding software utilities is often done to increase the value of hardware devices and to separate the bundled product from comparable products of competitors. Proprietary hardware devices with corresponding software are not subject to the problem of using hardware devices with software utilities of another manufacturer. But more and more hardware devices use standard interfaces to operate in combination with different software. Therefore, it is important for manufacturers to prevent the unauthorized use of software, which is developed to be distributed only in combination with the corresponding hardware devices. A further consideration of limiting the functionality of software with certain hardware devices can be a suitable means to tie a customer who purchased a hardware device to the same manufacturer. For example, the customer has to purchase the corresponding software product of the same manufacturer in order to gain access to all functions and options of the hardware. Therefore, the manufacturer is capable to calculate a mixed cost for the hardware and software products dependent upon the development expense.
Current methods of preventing the unauthorized use of software are not effective enough or a nuisance. The use of license keys is not effective as can be seen from the high number of available tools to remove license key inquiries or the huge number of published unauthorized license keys in the internet. Methods to generate license keys can often be determined fast. Also, it is not possible to monitor the usage of the software and in particular which use should only be authorized in combination with particular hardware devices.
An effective but uncomfortable method to protect the use of software is the use of hardware keys, called “dongles”. These external devices execute a certain algorithm to produce a code which the computer receives and affords access to the software code if the code is correct. While the use of hardware keys is an effective way to reduce software piracy, additional hardware keys raise the problem of connecting them to the computer which executes the software. Standardized input/output ports are available and technically sufficient but conflicts with other connected hardware occurs often. Hardware keys are also costly to produce and the combination with software is rather questionable. Hence, effective hardware keys are limited economically to software applications of high value.
The problem associated with current protection methods of software is that there is no method available which combines the authorization process of software use with the check on certain hardware devices accessed by the software.